Computer software has been written for serial computation. To solve a problem, an algorithm is constructed and implemented as a serial stream of instructions. These instructions are executed on a central processing unit on one computer. Only one instruction may execute at a time. After that instruction is finished, the next is executed.
Parallel computing, on the other hand, uses multiple processing elements simultaneously to solve a problem. This is accomplished by breaking the problem into independent parts so that each processing element can execute its part of the algorithm simultaneously with the others. The processing elements can be diverse and can include resources such as a single computing engine with multiple processors, several networked computing engines, specialized acceleration hardware, or any combination of the above. The result is an increase in efficiency and speed of processing.
There are several inefficiencies in the current parallel-computing-systems-related IoT architecture. IoT computing systems typically require the use of application software that is downloaded on node computing system micro servers within a cloud computing architecture in a data center to achieve efficient workload and sustain the huge amount of data generated from sensory data. For example Kinesis Amazon Web Services rely on HW micro servers and hardware accelerators within the data center to achieve an efficient throughput. The infrastructure receives raw data from different type of sensors and databases. The growth for data generated from IoT sensors will put huge pressure on the HW infrastructure and generate a high level of software complexity. IoT deployments will generate large quantities of data that most need to be processed and analyzed in real time. Processing large quantities of IoT data in real time will increase as a proportion of workloads of data centers, leaving providers facing new security, capacity and analytics challenges.
Large-scale applications like smart cities involving millions of sensors will lead to software complexity and high cost of management. Furthermore, parallel processing architecture within data centers is complex and inefficient requiring high cost of software and operational management. This is due to the lack of computational model, and compilers for parallel processing that are not mature.